Hashing algorithms can be used to create a “fingerprint” of a file or other data input. Hash functions can be used to create a hash value that can serve as an identifier of a file or other data. The hash value can be used as a shortcut for a lookup table or can be used for data comparison, e.g., to detect duplicate data or to verify that a particular file is an authentic copy of another file. In some cases, hash functions for different files can map to the same hash value, which results in a collision. Typically, it is desirable to minimize such collisions, so hash functions that have relatively high collision-resistance are generally preferable over less collision-resistant hash functions. It is typically also desirable that a hash function is resistant to creation of alternative messages that produce the same hash value. Examples of hashing algorithms include MD4 (message digest algorithm 4), MD5, SHA-1, and RIPEMD.
Hash functions can be used to verify the authenticity of a player file that is used to present content on a client device. For example, an Adobe® Flash® Media Server can be used to verify client small web format (SWF) files before allowing the SWF files to connect to an application on the server for presenting content. Verifying SWF files can help prevent third parties from creating unauthorized SWF files designed to stream resources developed or published by another entity. When a client SWF file connects to the server, the server can verify the SWF files using a symmetric key shared between the client and the server. If verified, the SWF file is allowed to connect to the server-side application.